import 'package:flutter/cupertino.dart';

/// Create： Zhang 4/2/21 8:58 AM
/// 描述：数据处理类的基类

///页面加载状态
enum LoadingState {
  loading,
  suc,
  empty,
  err,
}

///通知界面更新
typedef Notify = void Function();

class PageModel {
  ///页面是否被销毁
  bool _isDisPose = false;

  ///页面的状态,默认为加载状态
  LoadingState loadingState = LoadingState.loading;

  ///回调方法
  Notify? _notifyChange;

  void init() {
    _isDisPose = false;
  }

  ///方法回调，更新UI
  ///注意:目前只实现了单页面的订阅,请保持一个pageModel实例只对应一个page
  ///注意:此方法已封装在基础页面，非必要千万不要手动调用此方法修改回调方法，会造成页面状态无法更新
  ///如需通知UI刷新，使用notify()
  void update(Notify notify) {
    _notifyChange = notify;
  }

  ///通知变更
  void notify() {
    //如果页面销毁了，不往下执行
    if (_isDisPose) {
      return;
    }

    //如果回调方法不为空，执行回调
    if (_notifyChange != null) {
      _notifyChange!();
    }
  }

  ///页面销毁的回调
  void onDispose() {
    _isDisPose = true;
    _notifyChange = null;
  }
}
